﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Iudicium.Persona;
using Iudicium.Persona.CRN;
using log4net;
using Iudicium.Utilitarios;

public partial class Personas_Administrativos_FormularioAdministrativo : System.Web.UI.Page
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    private int AdministrativoId
    {
        set { AdministrativoIdHiddenField.Value = value.ToString(); }
        get
        {
            int administrativoId = 0;
            try
            {
                administrativoId = Convert.ToInt32(AdministrativoIdHiddenField.Value);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo convertir AdministrativoIdHiddenField.Value a un valor entero", ex);
            }
            return administrativoId;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ObtenerParametros();
        }
    }

    private void ObtenerParametros()
    {
        if (Session["AdministrativoId"] != null && !string.IsNullOrEmpty(Session["AdministrativoId"].ToString()))
        {
            AdministrativoIdHiddenField.Value = Session["AdministrativoId"].ToString();
            CargarDatos();
        }
        Session["PersonaJuridicaId"] = null;
    }

    private void CargarDatos()
    {
        Administrativo objAdministrativo = null;
        try
        {
            objAdministrativo = AdministrativoCRN.GetAdministrativoById(AdministrativoId);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener la persona con id: " + AdministrativoId, ex);
        }
        if (objAdministrativo == null)
            return;

        AdministrativoSeleccionado.SelectedId = objAdministrativo.AdministrativoId;
        AdministrativoSeleccionado.SelectedName = objAdministrativo.Nombre;
        CargoDropDownList.SelectedValue = objAdministrativo.CargoId.ToString();
        AdministrativoSeleccionado.Enabled = false;
    }

    protected void GuardarLinkButton_Click(object sender, EventArgs e)
    {
        DateTime fechaIngreso =  DateTime.Now;
        try
        {
             fechaIngreso = Convert.ToDateTime(FechaIngresoTextBox.Text);
        }
        catch(Exception ex)
        {
            log.Error("No se pudo convertir la fecha de ingreso", ex);
        }
        
        int cargoId = 0;
        try
        {
            cargoId = Convert.ToInt32(CargoDropDownList.SelectedValue);
        }
        catch(Exception ex)
        {
            log.Error("No se pudo obtener el cargoId de CargoDropDownList.SelectedValue", ex);
        }

        Administrativo objAdministrativo = new Administrativo(AdministrativoSeleccionado.SelectedId, fechaIngreso,
            cargoId, AdministrativoSeleccionado.SelectedName,
            CargoDropDownList.SelectedItem != null ? CargoDropDownList.SelectedItem.Text : "");

        if (AdministrativoSeleccionado.Enabled)
        {
            try
            {
                AdministrativoCRN.InsertAdministrativo(objAdministrativo);
                Notificacion.MostrarNotificacion("El Administrativo se insertó correctamente", Notificacion.TipoNotificacion.Alert);
            }
            catch (Exception ex)
            {
                log.Error("Ocurrio un error al tratar de Insertar el administrativo", ex);
                Notificacion.MostrarNotificacion("Ocurrio un error al tratar guardar el Nuevo Administrativo", Notificacion.TipoNotificacion.Error);
            }
        }
        else
        {
            try
            {
                AdministrativoCRN.UpdateAdministrativo(objAdministrativo);
                Notificacion.MostrarNotificacion("Los datos del Administrativo se editaron correctamente", Notificacion.TipoNotificacion.Alert);
            }
            catch (Exception ex)
            {
                log.Error("Ocurrio un error al tratar de Insertar el administrativo", ex);
                Notificacion.MostrarNotificacion("Ocurrio un error al tratar de editar los datos del Administrativo", Notificacion.TipoNotificacion.Error);
            }
        }

        Response.Redirect("~/Personas/Administrativos/ListaAdministrativos.aspx");
    }
}
